3
תגובות
יש לי בקרוב ראיון ואני צריך לדעת לענות על מספר שאלות. אשמח אם תעזרו לי למצוא תשובה במשפט אחד, ושיהיה קולע. (כן עשיתי גוגל אבל אשמח לתשובות גם מכם).

1. מה זה פולימורפיזם?
2. מה זה כימוס?
3. מה זה אבסטרקטיות?
4. מה זה הורשה?
5. מדוע מתכנתים כותבים פונקציות get ו-set ונותנים הרשאת private? (קשור לפולימורפיזם)
6. מה זה OOP? מה היתרונות שלו?

נ.ב. אני כן יודע את התשובות לשאלות, וכן עשיתי גוגל. אני מתכנת מזה שנים. פשוט לריאיון אני מעדיף ללמוד את המושגים במשפט אחד וקולע.

תודה רבה. אם אהיה לי עוד שאלות אשאל פה. (יש לי בקרוב ראיון למסלול גאמא בחיל המודיעין)

3 תשובות

avatar ענה intval ב 14 ליוני 2014 #

בראינות לגאמא פחות שואלים ידע לגבי תכנות ויותר שואלים על פרויקטים שעבדת עליהם, איך בנית אותם, ממה הם היו מורכבים,
לדוגמה:
- ספר לנו על פרויקט טכנולוגי שעבדת עליו בבית הספר או מחוץ לא בזמן האחרון
- באילו טכנולוגיות השתמשת כדי לממש אותו
- למה בחרת בטכנולוגיות אלו ולא בטכנולוגיה X
- אילו דברים היית צריך ללמוד שלא ידעת קודם בשביל לבצע את הפרויקט
- במי או במה נעזרת כדי לבצע אותו
- איך שמרת נתונים
- למה בחרת במסד נתונים (כזה או אחר, ולא בקובץ, לשמור בזיכרון, אפשרויות אחרות)
- אילו חלקים נפרדים היו לך במערכת, איך הם תיקשרו אחד עם השני
- אם היית מבצע את הפרויקט שוב, מה הייתה עושה בצורה שונה



לגבי השאלות הספציפיות שלך:
1. פולימורפיזם הוא: האפשרות לבצע פעולות זהות על אובייקטים מסוגים שונים בלי צורך לדעת את סוג האובייקט הספציפי
מתאפשר על ידי: זה שאובייקטים שונים יכולים לממש אינטרפייס זהה או לירוש ממחלקת אב משותפת
מיועד בשביל: לא לדאוג לסוג האובייקט בקוד ולאפשר כתיבת קוד זהה שפועל בצורה זהה על מחלקות שונות,
למשל: המתודה "לעבור עמוד" יכולה לעבוד בצורה זהה על מחלקה מסוג ספר ועל מחלקה מסוג מחברת.

2. כימוס היא הסתרה של המימוש הפנימי
כך שהמחלקה "מציגה החוצה" רק אוסף קטן של פעולות שהיא יודעת לעשות בלי שיעניין אותנו איך בדיוק היא עושה את זה
מתאפשר על ידי החבאת מאפיינים ומתודות באמצעות מודיפיקטורים private, protected, public
מיועד בשביל: לאפשר לשנות את המימוש הפנימי של המחלקה בלי להצריך שינויים במקומות אחרים בתוכנה
למשל: מחלקה שבודקת האם קובץ שמעלים לשרת כבר קיים בשרת יכולה להציג אחוצה רק מתודה checkDuplicate ובפנים יכולה להיות ממושת על ידי השוואת גודל הקובץ ושם הקובץ. מאוחר יותר, תרצה להחליף את המימוש הפנימי להשוואה לפי תאריך יצירה וmd5 של התוכן. בגלל שהמשתנים date, md5, size וכו' חבויים בתוך המחלקה - השינוי ישפיע רק על המחלקה ואף חלק אחר במערת לא יהיה מושפע היות שלהם נגישה רק המתודה checkDuplicate

3. אבסטרקציה היא עליה רמה אחת למעלה תוך כדי הסתרת המימוש והפרטים הקטנים של הרמה התחתונה
כך שהמכתנת לא צריך לדאוג איך לעבוד עם הרמה התחתונה
מתאפשר על ידי יצירת מחלקות
מיועד בשביל: למנוע מהמתכנת חשיבה על פרטים קטנים
למשל: מערכת הפעלה היא אבסטרקציה שמאפשרת למתכנת פעולה כמו ליצור קובץ, ורמה אחת מעטה היא בעצמה הולכת לדיסק ורושמת או קוראת בייתים מהמקום המתאים בדיסק, המתכנת לא צריך לדאוג לסוג הדיסק, לבדיקת מקום פנוי, לניהול רשימה של קבצים. כל אלו מבוצעים על ידי "שכבת האבסטרקציה" שמחביאה את המימוש והפרטים הטכניים.
מחלקה מסוג משתמש היא אבטסקציה, היות שהיא נותנן למתכנת אוסף של פעולות שהוא יכול לעשות ומחביאה מהמתכנת את הפרטים ברמה היותר נמוכה כמו איך לבצע שמירה למסד, אילו שדות לשמור, איך לטעון אותו, איך לבדוק האם יש לו יום הולדת וכו'.

java עצמה היא אבסטרקציה מעל מערכת ההפעלה. נניח שמערכת ההפעלה לינוקס מכילה פעולה כמו openNetwrokConnection ווינדוס מכילה פעולה כמו connectionOpen, רמה אחת מעל java נותנן לך מחלקה connection ומנהלת ומחביאה ממך את המימוש הפנימי הספציפי בלי שאתה תצטרך לבדוק באיזו מערכת הפעלה מדובר.
כך למשל מחלקה מסוג phpGuideInformationFetcher עם מתודה getLatestForumPosts מחביאה מהמתכנת את המימוש ברמה אחת למטע, כמו האם החיבור מתבצע ב http או פרוטוקול אחר, אילו נתונים צריך להעביר וכו'.


4. הורשה היא האפשרות ליצור מחלקות שיקבלו את המאפיינים והמתודות של מחלקות אחרות
כך שהמחלקה היורשת תכיל חלק(אלו שאינם private) ממתודות וממאפיני מחלקת האב, תוכל להישתמש בהם, להוסיף להם או לשנות אותם
מיועד בשביל: אבסטרקציה ומניעת שכפול קוד
למשל: מחלקה מסוג "חיבור לשרת FTP" יכולה לירוש את כל התכונות והמתודות של מחלקה מסוג "חיבור רשת" (עם פעולות כמו התחבר והתנתק) ולהוסיף לה פעולות ספציפיות משלה (כמו להעלות קובץ)

5. מתכנתים כותבים getרים וsetטרים כמו בכימוס, כדי שיהיה אפשר לשנות את המימוש הפנימי בלי לשנות קוד בחלקים אחרים בתוכנה
אם היה לך מאפיין שהיה מקבל unix timestamp ופתאום החלטת לשנות משהו ועכשיו צריך להעביר לו מופע של מחלקת DateTime
תצטרך לעבור בכל התוכנה ולשנות אותה (להוסיף קונברטציה לפני). אילו עם סטטר הייתה מוסיף קונוורטציה במקום אחד בלבד (בסטטר עצמו)

6. OOP היא פאראדיגמה (אופן עבודה מסוים) בתכנות שמיועד להקל על המתכנת בהמצעות פולימורפיזם, כימוס, הורשה ואבסטרקציה
מה שמוביל לכתיבת פחות קוד, קלות בתחזוקה ושימוש חוזר בקוד מפרויקט לפרויקט


בהצלחה בראיון.

avatar ענה mtndiv ב 14 ליוני 2014 #

וואו אלכס אתה ענק. ממש ממש תודה! הייתי ממליץ לך קצת לשנות מה שכתבת ולסדר אותו ואתה ממש יכול להעלות את זה בתור מדריך.
תודה רבה גבר.

avatar ענה moshe7799 ב 14 ליוני 2014 #

פשוט תקנה את הספר שלו ויהיה לך יותר ידע בנושא